package com.qianli.cashmama.trade.client.bill;

import com.fqgj.common.api.Page;
import com.fqgj.common.api.Response;
import com.qianli.cashmama.trade.client.bill.request.BillListRequest;
import com.qianli.cashmama.trade.client.bill.request.RepaymentQueryRequest;
import com.qianli.cashmama.trade.client.bill.request.RepaymentTrialRequest;
import com.qianli.cashmama.trade.client.bill.response.BillListResponse;
import com.qianli.cashmama.trade.client.bill.response.POrderPrePaymentResponse;
import com.qianli.cashmama.trade.client.bill.response.TradeDetailResponse;
import com.qianli.cashmama.trade.client.vo.BillRepayment2VO;
import com.qianli.cashmama.trade.client.vo.BillRepaymentDetailVO;
import com.qianli.cashmama.trade.client.vo.BillVO;
import com.qianli.cashmama.trade.client.vo.POrderPrePaymentVO;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: sm
 * Date: 2017/8/1
 * Time: 下午9:06
 */
public interface BillQueryService {

    /**
     * 通过用户的交易编号得到账单列表
     *
     * @return
     */
    Response<BillListResponse> queryBillList(BillListRequest billListRequest);

    /*****
     * 交易详情
     * @param tradeNo
     * @return
     */
    Response<TradeDetailResponse> queryTradeDetailByTradeNo(String tradeNo);


    /**
     * @param billNo
     * @return
     */
    Response<BillVO> queryByBillNo(String billNo);

    /**
     * @param orderBillId
     * @return
     */
    Response<List<BillVO>> queryByOrderBillId(List<Long> orderBillId);

    /**
     * @param userCode
     * @param
     * @return
     */
    Response<List<BillVO>> queryByUserCode(String userCode);

    Response<List<BillVO>> queryByUserCodes(List<String> userCode);

    /**
     * @param tradeNos
     * @return
     */
    Response<List<BillRepaymentDetailVO>> queryBillRepaymentFlowListByTradeNos(List<String> tradeNos);

    /**
     * 待还款查询
     */
    POrderPrePaymentResponse getPrePaymentOrder(POrderPrePaymentVO prePaymentVO, Page page);

    /**
     * 待还款信息 简单查询
     *
     * @param repaymentQueryRequest
     * @return
     */
    Response<BillRepayment2VO> getRepaymentDetail(RepaymentQueryRequest repaymentQueryRequest);

    /**
     * 待还款信息 试算
     *
     * @param repaymentTrialRequest
     * @return
     */
    Response<BillRepayment2VO> getRepaymentDetail(RepaymentTrialRequest repaymentTrialRequest);


    /**
     * 根据订单号查询账单
     * @param tradeNo
     * @return
     */
    Response<List<BillVO>> queryBillByTradeNo(String tradeNo);

}
